package com.millstein.strategy;

import com.millstein.enums.order.PayTypeEnum;
import com.millstein.vo.PayInfoVO;

/**
 * @description:
 * @author: tsing
 * @create: 2021-09-29 14:59
 */
public interface PayStrategy {

    /**
     * 策略名称
     * @return
     */
    PayTypeEnum type();

    /**
     * 下单
     * @param payInfoVO 订单的信息
     * @return
     */
    String placeOrder(PayInfoVO payInfoVO);

    /**
     * 退款
     * @param payInfoVO 订单的信息
     * @return
     */
    default String refund(PayInfoVO payInfoVO) {
        return "";
    }

    /**
     * 查询订单状态
     * @param payInfoVO 订单的信息
     * @return
     */
    default String queryPaySuccess(PayInfoVO payInfoVO) {
        return "";
    }
}
